{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 图像抗偏移模型训练\n",
    "\n",
    "> 使用卷积神经网络模型进行图像偏转角度计算，全套程序使用Python完成，主要的开发框架有Tensorflow、Keras、Numpy、Pillow。如需重新训练该模型，可在'./datasets'目录当中添加新的训练样本，然后点击菜单栏 Kernel -> Restart & Run All，完成训练后会默认自动将模型保存为'textdeskew.h5'文件。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 导入深度学习框架并开始构建神经网络"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "np.random.seed(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/kk/.local/lib/python3.5/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
      "  from ._conv import register_converters as _register_converters\n",
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import keras\n",
    "from keras.layers import Input, Conv2D, MaxPool2D, BatchNormalization, Flatten, Dense, Dropout\n",
    "from keras.models import Model, load_model\n",
    "from keras import backend as K"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import cv2\n",
    "from skimage.transform import hough_line, hough_line_peaks, rotate"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**注意:** cv2 是opencv的python接口，可能需要是用如下命令进行安装 `pip install opencv-python`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from libs.datasetFuncs import loadDatasets, datas2X, targets2Y, formatImage"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 初始配置\n",
    "\n",
    "- `USE_OLD_MODEL`: 是否使用旧有模型而不参与训练，True 则使用旧模型；False 则训练新模型\n",
    "- `format_size`: 图片采样尺寸"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "USE_OLD_MODEL = True\n",
    "USE_TRAINING = False\n",
    "format_size = (128, 128)\n",
    "\n",
    "batch_size = 50\n",
    "epochs_num = 60\n",
    "\n",
    "model_name = '../libs/deskew3.h5'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|████████████████████████████████████████| 114/114 [00:00<00:00, 453.77it/s]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0., 0., 1., 0.])"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f3892927c18>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "datas, targets = loadDatasets('./datasets/')\n",
    "plt.imshow(datas[0], cmap='gray')\n",
    "train_X = datas2X(datas, format_size)\n",
    "train_Y = targets2Y(targets)\n",
    "train_X.shape, train_Y.shape\n",
    "train_Y[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "input_X = Input((format_size[0], format_size[1], 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "conv1 = Conv2D(1, (3, 3), activation='relu')(input_X)\n",
    "pool1 = MaxPool2D((2, 2))(conv1)\n",
    "\n",
    "conv2 = Conv2D(3, (3, 3), activation='relu')(pool1)\n",
    "pool2 = MaxPool2D((2, 2))(conv2)\n",
    "\n",
    "normalized = BatchNormalization(axis=1)(pool2)\n",
    "\n",
    "conv3 = Conv2D(5, (3, 3), activation='relu')(normalized)\n",
    "pool3 = MaxPool2D((2, 2))(conv3)\n",
    "\n",
    "conv4 = Conv2D(8, (3, 3), activation='relu')(pool3)\n",
    "pool4 = MaxPool2D((2, 2))(conv4)\n",
    "\n",
    "flattened = Flatten()(pool4)\n",
    "dense1 = Dense(128, activation='relu')(flattened)\n",
    "droped = Dropout(0.5)(dense1)\n",
    "dense2 = Dense(64, activation='relu')(droped)\n",
    "dense_Y = Dense(4, activation='softmax')(dense2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "model = Model(input_X, dense_Y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "model.compile(optimizer='Adam', loss='categorical_crossentropy', metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 可视化神经网络模型\n",
    "\n",
    "**PS:** 使用该功能需安装 pydot 包，可以使用命令：`pip install pydot` 进行安装。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<svg height=\"1217pt\" viewBox=\"0.00 0.00 434.00 1217.00\" width=\"434pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 1213)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" points=\"-4,4 -4,-1213 430,-1213 430,4 -4,4\" stroke=\"none\"/>\n",
       "<!-- 139880950417448 -->\n",
       "<g class=\"node\" id=\"node1\"><title>139880950417448</title>\n",
       "<polygon fill=\"none\" points=\"60.5,-1162.5 60.5,-1208.5 365.5,-1208.5 365.5,-1162.5 60.5,-1162.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"123\" y=\"-1181.8\">input_1: InputLayer</text>\n",
       "<polyline fill=\"none\" points=\"185.5,-1162.5 185.5,-1208.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"213\" y=\"-1193.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"185.5,-1185.5 240.5,-1185.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"213\" y=\"-1170.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"240.5,-1162.5 240.5,-1208.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"303\" y=\"-1193.3\">(None, 128, 128, 1)</text>\n",
       "<polyline fill=\"none\" points=\"240.5,-1185.5 365.5,-1185.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"303\" y=\"-1170.3\">(None, 128, 128, 1)</text>\n",
       "</g>\n",
       "<!-- 139880941554208 -->\n",
       "<g class=\"node\" id=\"node2\"><title>139880941554208</title>\n",
       "<polygon fill=\"none\" points=\"61.5,-1079.5 61.5,-1125.5 364.5,-1125.5 364.5,-1079.5 61.5,-1079.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"123\" y=\"-1098.8\">conv2d_1: Conv2D</text>\n",
       "<polyline fill=\"none\" points=\"184.5,-1079.5 184.5,-1125.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"212\" y=\"-1110.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"184.5,-1102.5 239.5,-1102.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"212\" y=\"-1087.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"239.5,-1079.5 239.5,-1125.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"302\" y=\"-1110.3\">(None, 128, 128, 1)</text>\n",
       "<polyline fill=\"none\" points=\"239.5,-1102.5 364.5,-1102.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"302\" y=\"-1087.3\">(None, 126, 126, 1)</text>\n",
       "</g>\n",
       "<!-- 139880950417448&#45;&gt;139880941554208 -->\n",
       "<g class=\"edge\" id=\"edge1\"><title>139880950417448-&gt;139880941554208</title>\n",
       "<path d=\"M213,-1162.37C213,-1154.15 213,-1144.66 213,-1135.73\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"216.5,-1135.61 213,-1125.61 209.5,-1135.61 216.5,-1135.61\" stroke=\"black\"/>\n",
       "</g>\n",
       "<!-- 139880950397752 -->\n",
       "<g class=\"node\" id=\"node3\"><title>139880950397752</title>\n",
       "<polygon fill=\"none\" points=\"19.5,-996.5 19.5,-1042.5 406.5,-1042.5 406.5,-996.5 19.5,-996.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"123\" y=\"-1015.8\">max_pooling2d_1: MaxPooling2D</text>\n",
       "<polyline fill=\"none\" points=\"226.5,-996.5 226.5,-1042.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"254\" y=\"-1027.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"226.5,-1019.5 281.5,-1019.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"254\" y=\"-1004.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"281.5,-996.5 281.5,-1042.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"344\" y=\"-1027.3\">(None, 126, 126, 1)</text>\n",
       "<polyline fill=\"none\" points=\"281.5,-1019.5 406.5,-1019.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"344\" y=\"-1004.3\">(None, 63, 63, 1)</text>\n",
       "</g>\n",
       "<!-- 139880941554208&#45;&gt;139880950397752 -->\n",
       "<g class=\"edge\" id=\"edge2\"><title>139880941554208-&gt;139880950397752</title>\n",
       "<path d=\"M213,-1079.37C213,-1071.15 213,-1061.66 213,-1052.73\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"216.5,-1052.61 213,-1042.61 209.5,-1052.61 216.5,-1052.61\" stroke=\"black\"/>\n",
       "</g>\n",
       "<!-- 139880950395456 -->\n",
       "<g class=\"node\" id=\"node4\"><title>139880950395456</title>\n",
       "<polygon fill=\"none\" points=\"68.5,-913.5 68.5,-959.5 357.5,-959.5 357.5,-913.5 68.5,-913.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"130\" y=\"-932.8\">conv2d_2: Conv2D</text>\n",
       "<polyline fill=\"none\" points=\"191.5,-913.5 191.5,-959.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"219\" y=\"-944.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"191.5,-936.5 246.5,-936.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"219\" y=\"-921.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"246.5,-913.5 246.5,-959.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"302\" y=\"-944.3\">(None, 63, 63, 1)</text>\n",
       "<polyline fill=\"none\" points=\"246.5,-936.5 357.5,-936.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"302\" y=\"-921.3\">(None, 61, 61, 3)</text>\n",
       "</g>\n",
       "<!-- 139880950397752&#45;&gt;139880950395456 -->\n",
       "<g class=\"edge\" id=\"edge3\"><title>139880950397752-&gt;139880950395456</title>\n",
       "<path d=\"M213,-996.366C213,-988.152 213,-978.658 213,-969.725\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"216.5,-969.607 213,-959.607 209.5,-969.607 216.5,-969.607\" stroke=\"black\"/>\n",
       "</g>\n",
       "<!-- 139880950416160 -->\n",
       "<g class=\"node\" id=\"node5\"><title>139880950416160</title>\n",
       "<polygon fill=\"none\" points=\"26.5,-830.5 26.5,-876.5 399.5,-876.5 399.5,-830.5 26.5,-830.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"130\" y=\"-849.8\">max_pooling2d_2: MaxPooling2D</text>\n",
       "<polyline fill=\"none\" points=\"233.5,-830.5 233.5,-876.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"261\" y=\"-861.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"233.5,-853.5 288.5,-853.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"261\" y=\"-838.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"288.5,-830.5 288.5,-876.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"344\" y=\"-861.3\">(None, 61, 61, 3)</text>\n",
       "<polyline fill=\"none\" points=\"288.5,-853.5 399.5,-853.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"344\" y=\"-838.3\">(None, 30, 30, 3)</text>\n",
       "</g>\n",
       "<!-- 139880950395456&#45;&gt;139880950416160 -->\n",
       "<g class=\"edge\" id=\"edge4\"><title>139880950395456-&gt;139880950416160</title>\n",
       "<path d=\"M213,-913.366C213,-905.152 213,-895.658 213,-886.725\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"216.5,-886.607 213,-876.607 209.5,-886.607 216.5,-886.607\" stroke=\"black\"/>\n",
       "</g>\n",
       "<!-- 139880950418456 -->\n",
       "<g class=\"node\" id=\"node6\"><title>139880950418456</title>\n",
       "<polygon fill=\"none\" points=\"-2.84217e-14,-747.5 -2.84217e-14,-793.5 426,-793.5 426,-747.5 -2.84217e-14,-747.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"130\" y=\"-766.8\">batch_normalization_1: BatchNormalization</text>\n",
       "<polyline fill=\"none\" points=\"260,-747.5 260,-793.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"287.5\" y=\"-778.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"260,-770.5 315,-770.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"287.5\" y=\"-755.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"315,-747.5 315,-793.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"370.5\" y=\"-778.3\">(None, 30, 30, 3)</text>\n",
       "<polyline fill=\"none\" points=\"315,-770.5 426,-770.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"370.5\" y=\"-755.3\">(None, 30, 30, 3)</text>\n",
       "</g>\n",
       "<!-- 139880950416160&#45;&gt;139880950418456 -->\n",
       "<g class=\"edge\" id=\"edge5\"><title>139880950416160-&gt;139880950418456</title>\n",
       "<path d=\"M213,-830.366C213,-822.152 213,-812.658 213,-803.725\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"216.5,-803.607 213,-793.607 209.5,-803.607 216.5,-803.607\" stroke=\"black\"/>\n",
       "</g>\n",
       "<!-- 139880950947568 -->\n",
       "<g class=\"node\" id=\"node7\"><title>139880950947568</title>\n",
       "<polygon fill=\"none\" points=\"68.5,-664.5 68.5,-710.5 357.5,-710.5 357.5,-664.5 68.5,-664.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"130\" y=\"-683.8\">conv2d_3: Conv2D</text>\n",
       "<polyline fill=\"none\" points=\"191.5,-664.5 191.5,-710.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"219\" y=\"-695.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"191.5,-687.5 246.5,-687.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"219\" y=\"-672.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"246.5,-664.5 246.5,-710.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"302\" y=\"-695.3\">(None, 30, 30, 3)</text>\n",
       "<polyline fill=\"none\" points=\"246.5,-687.5 357.5,-687.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"302\" y=\"-672.3\">(None, 28, 28, 5)</text>\n",
       "</g>\n",
       "<!-- 139880950418456&#45;&gt;139880950947568 -->\n",
       "<g class=\"edge\" id=\"edge6\"><title>139880950418456-&gt;139880950947568</title>\n",
       "<path d=\"M213,-747.366C213,-739.152 213,-729.658 213,-720.725\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"216.5,-720.607 213,-710.607 209.5,-720.607 216.5,-720.607\" stroke=\"black\"/>\n",
       "</g>\n",
       "<!-- 139880950854768 -->\n",
       "<g class=\"node\" id=\"node8\"><title>139880950854768</title>\n",
       "<polygon fill=\"none\" points=\"26.5,-581.5 26.5,-627.5 399.5,-627.5 399.5,-581.5 26.5,-581.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"130\" y=\"-600.8\">max_pooling2d_3: MaxPooling2D</text>\n",
       "<polyline fill=\"none\" points=\"233.5,-581.5 233.5,-627.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"261\" y=\"-612.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"233.5,-604.5 288.5,-604.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"261\" y=\"-589.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"288.5,-581.5 288.5,-627.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"344\" y=\"-612.3\">(None, 28, 28, 5)</text>\n",
       "<polyline fill=\"none\" points=\"288.5,-604.5 399.5,-604.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"344\" y=\"-589.3\">(None, 14, 14, 5)</text>\n",
       "</g>\n",
       "<!-- 139880950947568&#45;&gt;139880950854768 -->\n",
       "<g class=\"edge\" id=\"edge7\"><title>139880950947568-&gt;139880950854768</title>\n",
       "<path d=\"M213,-664.366C213,-656.152 213,-646.658 213,-637.725\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"216.5,-637.607 213,-627.607 209.5,-637.607 216.5,-637.607\" stroke=\"black\"/>\n",
       "</g>\n",
       "<!-- 139880950370032 -->\n",
       "<g class=\"node\" id=\"node9\"><title>139880950370032</title>\n",
       "<polygon fill=\"none\" points=\"68.5,-498.5 68.5,-544.5 357.5,-544.5 357.5,-498.5 68.5,-498.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"130\" y=\"-517.8\">conv2d_4: Conv2D</text>\n",
       "<polyline fill=\"none\" points=\"191.5,-498.5 191.5,-544.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"219\" y=\"-529.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"191.5,-521.5 246.5,-521.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"219\" y=\"-506.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"246.5,-498.5 246.5,-544.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"302\" y=\"-529.3\">(None, 14, 14, 5)</text>\n",
       "<polyline fill=\"none\" points=\"246.5,-521.5 357.5,-521.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"302\" y=\"-506.3\">(None, 12, 12, 8)</text>\n",
       "</g>\n",
       "<!-- 139880950854768&#45;&gt;139880950370032 -->\n",
       "<g class=\"edge\" id=\"edge8\"><title>139880950854768-&gt;139880950370032</title>\n",
       "<path d=\"M213,-581.366C213,-573.152 213,-563.658 213,-554.725\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"216.5,-554.607 213,-544.607 209.5,-554.607 216.5,-554.607\" stroke=\"black\"/>\n",
       "</g>\n",
       "<!-- 139880950728072 -->\n",
       "<g class=\"node\" id=\"node10\"><title>139880950728072</title>\n",
       "<polygon fill=\"none\" points=\"26.5,-415.5 26.5,-461.5 399.5,-461.5 399.5,-415.5 26.5,-415.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"130\" y=\"-434.8\">max_pooling2d_4: MaxPooling2D</text>\n",
       "<polyline fill=\"none\" points=\"233.5,-415.5 233.5,-461.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"261\" y=\"-446.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"233.5,-438.5 288.5,-438.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"261\" y=\"-423.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"288.5,-415.5 288.5,-461.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"344\" y=\"-446.3\">(None, 12, 12, 8)</text>\n",
       "<polyline fill=\"none\" points=\"288.5,-438.5 399.5,-438.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"344\" y=\"-423.3\">(None, 6, 6, 8)</text>\n",
       "</g>\n",
       "<!-- 139880950370032&#45;&gt;139880950728072 -->\n",
       "<g class=\"edge\" id=\"edge9\"><title>139880950370032-&gt;139880950728072</title>\n",
       "<path d=\"M213,-498.366C213,-490.152 213,-480.658 213,-471.725\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"216.5,-471.607 213,-461.607 209.5,-471.607 216.5,-471.607\" stroke=\"black\"/>\n",
       "</g>\n",
       "<!-- 139880950287664 -->\n",
       "<g class=\"node\" id=\"node11\"><title>139880950287664</title>\n",
       "<polygon fill=\"none\" points=\"81.5,-332.5 81.5,-378.5 344.5,-378.5 344.5,-332.5 81.5,-332.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"136.5\" y=\"-351.8\">flatten_1: Flatten</text>\n",
       "<polyline fill=\"none\" points=\"191.5,-332.5 191.5,-378.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"219\" y=\"-363.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"191.5,-355.5 246.5,-355.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"219\" y=\"-340.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"246.5,-332.5 246.5,-378.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"295.5\" y=\"-363.3\">(None, 6, 6, 8)</text>\n",
       "<polyline fill=\"none\" points=\"246.5,-355.5 344.5,-355.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"295.5\" y=\"-340.3\">(None, 288)</text>\n",
       "</g>\n",
       "<!-- 139880950728072&#45;&gt;139880950287664 -->\n",
       "<g class=\"edge\" id=\"edge10\"><title>139880950728072-&gt;139880950287664</title>\n",
       "<path d=\"M213,-415.366C213,-407.152 213,-397.658 213,-388.725\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"216.5,-388.607 213,-378.607 209.5,-388.607 216.5,-388.607\" stroke=\"black\"/>\n",
       "</g>\n",
       "<!-- 139880951121120 -->\n",
       "<g class=\"node\" id=\"node12\"><title>139880951121120</title>\n",
       "<polygon fill=\"none\" points=\"93,-249.5 93,-295.5 333,-295.5 333,-249.5 93,-249.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"144\" y=\"-268.8\">dense_1: Dense</text>\n",
       "<polyline fill=\"none\" points=\"195,-249.5 195,-295.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"222.5\" y=\"-280.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"195,-272.5 250,-272.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"222.5\" y=\"-257.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"250,-249.5 250,-295.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"291.5\" y=\"-280.3\">(None, 288)</text>\n",
       "<polyline fill=\"none\" points=\"250,-272.5 333,-272.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"291.5\" y=\"-257.3\">(None, 128)</text>\n",
       "</g>\n",
       "<!-- 139880950287664&#45;&gt;139880951121120 -->\n",
       "<g class=\"edge\" id=\"edge11\"><title>139880950287664-&gt;139880951121120</title>\n",
       "<path d=\"M213,-332.366C213,-324.152 213,-314.658 213,-305.725\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"216.5,-305.607 213,-295.607 209.5,-305.607 216.5,-305.607\" stroke=\"black\"/>\n",
       "</g>\n",
       "<!-- 139880951123248 -->\n",
       "<g class=\"node\" id=\"node13\"><title>139880951123248</title>\n",
       "<polygon fill=\"none\" points=\"81.5,-166.5 81.5,-212.5 344.5,-212.5 344.5,-166.5 81.5,-166.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"144\" y=\"-185.8\">dropout_1: Dropout</text>\n",
       "<polyline fill=\"none\" points=\"206.5,-166.5 206.5,-212.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"234\" y=\"-197.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"206.5,-189.5 261.5,-189.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"234\" y=\"-174.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"261.5,-166.5 261.5,-212.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"303\" y=\"-197.3\">(None, 128)</text>\n",
       "<polyline fill=\"none\" points=\"261.5,-189.5 344.5,-189.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"303\" y=\"-174.3\">(None, 128)</text>\n",
       "</g>\n",
       "<!-- 139880951121120&#45;&gt;139880951123248 -->\n",
       "<g class=\"edge\" id=\"edge12\"><title>139880951121120-&gt;139880951123248</title>\n",
       "<path d=\"M213,-249.366C213,-241.152 213,-231.658 213,-222.725\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"216.5,-222.607 213,-212.607 209.5,-222.607 216.5,-222.607\" stroke=\"black\"/>\n",
       "</g>\n",
       "<!-- 139880950427320 -->\n",
       "<g class=\"node\" id=\"node14\"><title>139880950427320</title>\n",
       "<polygon fill=\"none\" points=\"93,-83.5 93,-129.5 333,-129.5 333,-83.5 93,-83.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"144\" y=\"-102.8\">dense_2: Dense</text>\n",
       "<polyline fill=\"none\" points=\"195,-83.5 195,-129.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"222.5\" y=\"-114.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"195,-106.5 250,-106.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"222.5\" y=\"-91.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"250,-83.5 250,-129.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"291.5\" y=\"-114.3\">(None, 128)</text>\n",
       "<polyline fill=\"none\" points=\"250,-106.5 333,-106.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"291.5\" y=\"-91.3\">(None, 64)</text>\n",
       "</g>\n",
       "<!-- 139880951123248&#45;&gt;139880950427320 -->\n",
       "<g class=\"edge\" id=\"edge13\"><title>139880951123248-&gt;139880950427320</title>\n",
       "<path d=\"M213,-166.366C213,-158.152 213,-148.658 213,-139.725\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"216.5,-139.607 213,-129.607 209.5,-139.607 216.5,-139.607\" stroke=\"black\"/>\n",
       "</g>\n",
       "<!-- 139880950425024 -->\n",
       "<g class=\"node\" id=\"node15\"><title>139880950425024</title>\n",
       "<polygon fill=\"none\" points=\"96.5,-0.5 96.5,-46.5 329.5,-46.5 329.5,-0.5 96.5,-0.5\" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"147.5\" y=\"-19.8\">dense_3: Dense</text>\n",
       "<polyline fill=\"none\" points=\"198.5,-0.5 198.5,-46.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"226\" y=\"-31.3\">input:</text>\n",
       "<polyline fill=\"none\" points=\"198.5,-23.5 253.5,-23.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"226\" y=\"-8.3\">output:</text>\n",
       "<polyline fill=\"none\" points=\"253.5,-0.5 253.5,-46.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"291.5\" y=\"-31.3\">(None, 64)</text>\n",
       "<polyline fill=\"none\" points=\"253.5,-23.5 329.5,-23.5 \" stroke=\"black\"/>\n",
       "<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"291.5\" y=\"-8.3\">(None, 4)</text>\n",
       "</g>\n",
       "<!-- 139880950427320&#45;&gt;139880950425024 -->\n",
       "<g class=\"edge\" id=\"edge14\"><title>139880950427320-&gt;139880950425024</title>\n",
       "<path d=\"M213,-83.3664C213,-75.1516 213,-65.6579 213,-56.7252\" fill=\"none\" stroke=\"black\"/>\n",
       "<polygon fill=\"black\" points=\"216.5,-56.6068 213,-46.6068 209.5,-56.6069 216.5,-56.6068\" stroke=\"black\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>"
      ],
      "text/plain": [
       "<IPython.core.display.SVG object>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from keras.utils.vis_utils import model_to_dot\n",
    "from IPython.display import SVG\n",
    "\n",
    "SVG(model_to_dot(model, show_shapes=True).create(prog='dot', format='svg'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "if USE_OLD_MODEL:\n",
    "    model = keras.models.load_model(model_name)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "if USE_TRAINING:\n",
    "    model.fit(train_X, train_Y, batch_size=batch_size, epochs=epochs_num)\n",
    "    model.save(model_name)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 测试模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "456/456 [==============================] - 1s 3ms/step\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.05091926988314841, 1.0]"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.evaluate(train_X, train_Y, batch_size=batch_size)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def calculate_deviation(angle):\n",
    "    angle_in_degrees = np.abs(angle)\n",
    "    deviation = np.abs(np.pi / 4 - angle_in_degrees)\n",
    "\n",
    "    return deviation\n",
    "\n",
    "def compare_sum(value):\n",
    "    if value >= 44 and value <= 46:\n",
    "        return True\n",
    "    else:\n",
    "        return False\n",
    "\n",
    "def get_max_freq_elem(arr):\n",
    "    max_arr = []\n",
    "    freqs = {}\n",
    "    for i in arr:\n",
    "        if i in freqs:\n",
    "            freqs[i] += 1\n",
    "        else:\n",
    "            freqs[i] = 1\n",
    "\n",
    "    sorted_keys = sorted(freqs, key=freqs.get, reverse=True)\n",
    "    max_freq = freqs[sorted_keys[0]]\n",
    "\n",
    "    for k in sorted_keys:\n",
    "        if freqs[k] == max_freq:\n",
    "            max_arr.append(k)\n",
    "\n",
    "    return max_arr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7f388a955fd0>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nSQ45pMD/Bw8NuVjHzPmWAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f388a8ccb00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "img = cv2.imread('./test_data/2.jpg', 0)\n",
    "plt.imshow(img, cmap='gray')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7f388a86d9b0>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n0ABz5swJcp/g3MTn82HLli3o169fjRf9IpmO42nD2lpbISK43W6YTCZ4vV7Y7XZ4vV5YrVa0a9eu\n2vn+6U3AjAV2LN56662YMWOGiLcVT5C4RDuOmyAjIdTszMWukydPRlXUQ+8/+uijuvlbLBacOHEC\ndrsdJpMJCxYsAGNMRMU3Go148sknQURixh0wYEBUok6Em0QyScfzbG2AiJCUlCQME/zQJH62Yl3j\nvCUSINB4//rXv1BYWAjGmDAF1wViEV9FRQXS09PRunVrobs899xzYsVYC0VRsHr16rAOvvLKKyMS\n1IABA9CgQQOoqopLLrkETz/9tAgJRER4+umnRfrp06eDiNC/f/8wXYeI0L59+zACijYJdOvWLeq7\nx4vq6iTa2M18sZQvAdSHRfO8JhIgMMtnZWXhqaeeQnp6ep3MLNrZVBtXWFuHadOmoW3btrBarRgx\nYkRQeu2CoyzLcLlcGDt2bBjxjBw5UteKlZ2djZMnT4pFxI0bN8JoNOLxxx8XZlIeOAEA5s2bJxT7\ngwcPBnEug8GAnTt3hpUTTSzTRnTh4M8n0t56AzoekS30d3JysjAE1Mee/Jhuwmf7iuUqT0SUnZ0t\n3MGJqNqu2dH+d7lc5PP56PPPPw9LqygKeb1eevXVV2nt2rW0e/du4Rq/dOnSoPyJiO6++2767rvv\n6KWXXtLNR88lPvS3oigkSZIoZ8aMGfT111/TggULSJIkqqioEK70Wld5IiK/3x+Wp7aOoa711XG1\n52XV1F1er25Op5Py8/Np//79lJubS9VFvbjKnwsgIixbtgwbN26ELMsYP358tfLRrmTrwWazYdas\nWcjJyRE2e+2znJvMnTsXJSUlAAKzc2VlpRAPeKO/9dZbGDx4sK6jnp6DIp81uejGlf7FixfD5/OB\nMYYdO3bgvvvuw7Jly2AwGHD8+HH07dtXWL04p+Cch2/E0qJt27a46KKLgnQsqqbyrcdxE4WWg2vr\nwKN28ogqdY6zzSliXdE4ic/nI1VVgzY/HTx4kCRJSnjW4puk/vWvf+nOspIkUbdu3UiSJCooKNCd\n9TweD91zzz1UWFgYlod2c5Usy+R0OsUsr01XVlYWdo+I6LbbbgvLT5Zlmjp1KimKQhaLhV566SVR\nbm5uLk2ePJmWLl0qypZlmYiIZFmmYcOGhXGItLQ0mj9/PiUnJ4dxgqZNm9aIK9SUo3CO6fV6SZIk\n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\nRK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f388a89b4e0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "size = np.array(img.shape[::-1])\n",
    "k = 2048 / size.max()\n",
    "sample_size = np.around(k * size).astype('int')\n",
    "sample = cv2.resize(img, tuple(sample_size), interpolation=cv2.INTER_AREA)\n",
    "plt.imshow(sample, cmap='gray')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7f388a7d3c50>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f388a890f98>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "edges = cv2.Canny(sample, 50, 150, apertureSize=3) # canny(img, 3)\n",
    "plt.imshow(edges, cmap='gray')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "h, a, d = hough_line(edges)\n",
    "_, ap, _ = hough_line_peaks(h, a, d, num_peaks=20)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-16.592178770949722, -13.575418994413418, 74.91620111731844, -14.581005586592182, 74.91620111731844, -15.586592178770958, 74.91620111731844, -15.586592178770958, -17.5977653631285, -15.586592178770958, 74.91620111731844, -14.581005586592182, 74.91620111731844, 74.91620111731844, 74.91620111731844, -15.586592178770958, -15.586592178770958, 74.91620111731844, -12.56983240223464, -15.586592178770958]\n"
     ]
    }
   ],
   "source": [
    "if len(ap) != 0:\n",
    "    absolute_deviations = [calculate_deviation(k) for k in ap]\n",
    "    average_deviation = np.mean(np.rad2deg(absolute_deviations))\n",
    "    ap_deg = [np.rad2deg(x) for x in ap]\n",
    "    print(ap_deg)\n",
    "\n",
    "    bin_0_45 = []\n",
    "    bin_45_90 = []\n",
    "    bin_0_45n = []\n",
    "    bin_45_90n = []\n",
    "    \n",
    "    for ang in ap_deg:\n",
    "        deviation_sum = int(90 - ang + average_deviation)\n",
    "        if compare_sum(deviation_sum):\n",
    "            bin_45_90.append(ang)\n",
    "            continue\n",
    "\n",
    "        deviation_sum = int(ang + average_deviation)\n",
    "        if compare_sum(deviation_sum):\n",
    "            bin_0_45.append(ang)\n",
    "            continue\n",
    "\n",
    "        deviation_sum = int(-ang + average_deviation)\n",
    "        if compare_sum(deviation_sum):\n",
    "            bin_0_45n.append(ang)\n",
    "            continue\n",
    "\n",
    "        deviation_sum = int(90 + ang + average_deviation)\n",
    "        if compare_sum(deviation_sum):\n",
    "            bin_45_90n.append(ang)\n",
    "\n",
    "    angles = [bin_0_45, bin_45_90, bin_0_45n, bin_45_90n]\n",
    "    lmax = 0\n",
    "\n",
    "    for j in range(len(angles)):\n",
    "        l = len(angles[j])\n",
    "        if l > lmax:\n",
    "            lmax = l\n",
    "            maxi = j\n",
    "\n",
    "    if lmax:\n",
    "        ans_arr = get_max_freq_elem(angles[maxi])\n",
    "        ans_res = np.mean(ans_arr)\n",
    "\n",
    "    else:\n",
    "        ans_arr = get_max_freq_elem(ap_deg)\n",
    "        ans_res = np.mean(ans_arr)\n",
    "\n",
    "    data = {\n",
    "        \"Average Deviation from pi/4\": average_deviation,\n",
    "        \"Estimated Angle\": ans_res,\n",
    "        \"Angle bins\": angles}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-105.58659217877096"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "angle = data['Estimated Angle']\n",
    "\n",
    "if angle >= 0 and angle <= 90:\n",
    "    rot_angle = angle - 90\n",
    "if angle >= -45 and angle < 0:\n",
    "    rot_angle = angle - 90\n",
    "if angle >= -90 and angle < -45:\n",
    "    rot_angle = 90 + angle\n",
    "rot_angle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(158, 158)"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\noCiKw/8PZWidVahq8RsAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f388a476f98>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mini = np.zeros(format_size, dtype='uint8') + 255\n",
    "\n",
    "fg_w, fg_h = sample.shape[::-1]\n",
    "bg_w, bg_h = format_size\n",
    "\n",
    "if fg_h == fg_w:\n",
    "    content = cv2.resize(sample, format_size, interpolation=cv2.INTER_AREA)\n",
    "    mini = np.array(content, dtype='uint8')\n",
    "elif fg_h > fg_w:\n",
    "    h = bg_h\n",
    "    w = int(h / fg_h * fg_w)\n",
    "    image2 = cv2.resize(sample, (w, h), interpolation=cv2.INTER_AREA)\n",
    "    image2_arr = np.array(image2, dtype='uint8')\n",
    "    mini[:, (bg_w - w) // 2: (bg_w - w) // 2 + w] = image2_arr\n",
    "elif fg_w > fg_h:\n",
    "    w = bg_w\n",
    "    h = int(w / fg_w * fg_h)\n",
    "    image2 = cv2.resize(sample, (w, h), interpolation=cv2.INTER_AREA)\n",
    "    image2_arr = np.array(image2, dtype='uint8')\n",
    "    mini[(bg_h - h) // 2: (bg_h - h) // 2 + h, :] = image2_arr\n",
    "\n",
    "rotated_mini = rotate(mini, rot_angle, resize=True, cval=1)\n",
    "plt.imshow(rotated_mini, cmap='gray')\n",
    "rotated_mini.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-180\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQUAAAD8CAYAAAB+fLH0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnWuMXVeV5//rPutW2a6q63IqfsQuY5wAcXAelUyi8LAS\nEK+IMBJiYBg63Z2RNRIzTbdaapLmQ09L8wE0raYZqSfdFtBkRkDI0EAixExgwqNnCDAptyEkTuyY\nvGzHjsuucpVdr/ta8+HctWudfU7dulX3WeX1kyzX3eecffbZ956111577bWImWEYhiEkOt0AwzC6\nCxMKhmGEMKFgGEYIEwqGYYQwoWAYRggTCoZhhDChYBhGiJYJBSJ6PxEdI6ITRPRAq+5jGEZzoVY4\nLxFREsBxAO8FcArA0wA+wcxHm34zwzCaSqpF9d4G4AQzvwQARPQIgHsBxAqFoaEhHhkZaVFTDMMA\ngMOHD59n5i3LndcqobAdwEn1+RSAf6FPIKKDAA4CwM6dOzE2NtaiphiGAQBE9Go953XM0MjMh5h5\nlJlHt2xZVngZhtEmWiUUTgO4Rn3eUS0zDKPLaZVQeBrAXiLaTUQZAB8H8HiL7mUYRhNpiU2BmUtE\n9O8BPAEgCeCrzPxcK+5lGEZzaZWhEcz8AwA/aFX9hmG0BvNoNAwjhAkFwzBCmFAwDCOECQXDMEKY\nUDAMI4QJBcMwQphQMAwjhAkFwzBCmFAwDCOECQXDMEKYUDAMI4QJBcMwQphQMAwjhAkFwzBCmFAw\nDCOECQXDMEKYUDAMI4QJBcMwQphQMAwjhAkFwzBCmFAwDCOECQXDMEKYUDAMI4QJBcMwQphQMAwj\nxKqFAhFdQ0Q/IaKjRPQcEX2mWp4noh8R0YvV/web11zDMFpNI5pCCcCfMvPbANwO4NNE9DYADwB4\nkpn3Aniy+tkwjDXCqoUCM59h5n+u/n0JwPMAtgO4F8DD1dMeBvCRRhtpGEb7aIpNgYhGANwE4FcA\nhpn5TPXQWQDDS1xzkIjGiGhsfHy8Gc0wDKMJNCwUiGgDgH8E8MfMPK2PMTMD4LjrmPkQM48y8+iW\nLVsabYZhGE2iIaFARGkEAuHrzPydavEbRLS1enwrgHONNdEwjHbSyOoDAfgKgOeZ+a/VoccB3Ff9\n+z4Aj62+eYZhtJtUA9feCeBTAH5LRL+ulv05gM8DeJSI7gfwKoCPNdZEwzDayaqFAjP/XwC0xOG7\nV1uvYRidxTwaDcMIYULBMIwQJhQMwwhhQsEwjBAmFAzDCNHIkuS6IXC8BEqlkvssZfK/ELhnBFQq\nlSXrSiQSkTJ9rV9GRLFl/n2kjJkj5+m2+tcSUc3zdLv8Mn0fqU/+TyQSkXrl2VMp+3mtRUxTMAwj\nhIlyAOVyGQAwNzcX+rwcMlrq0TVuFK6lbWjiNIqVnl9Lw9Fag/8McZpNOp0GsDjil8tlFAqF0HX6\nuN/OVCqFXC5X8xyj+zChoMhmswDCqryw1AsOxKv3ta7VL6CgBYv/oi71Qtd68WuhBYfUp9uk76vP\nLxaLuHTpEgAgk8kAAHK5XOSZRZgkk8nI1IyIXP1x/WB0HvtWDMMIYZoCghFN/79SahnuGqmv3rpW\nev5qISLk8/lQWTqddv1WSxMSdF81u9+M5mCagmEYIUxTQG17wUqubxYrra9do2ylUnH3EsOhXnas\npx3LGU1XUpfRGkwoYPXC4EqDmTE/Pw8gbExsxQu80u/EhEjzsOmDYRghTFMw6oaZ3ZKnLDFWKpVV\nG2gbaUccpi00B9MUDMMIccVrCoVCwbzt6iSZTLq+6qTjUZxzGVDbDmHfbf2YpmAYRogrVlPopONM\nqVTCzMwMADhr/tzcHHp7ewEAGzduBAD09PR0pH1LUalUUCwWAYRdwjtBrfvW2hNSbx1XMlesUKhn\nj0CzkB/kuXNBCowTJ044YSBGunQ67dq0sLAAANiwYQMAYMeOHbjqqqsALO45aCfS/kKh4DaNiaEx\nm8127R6G5Tw9TVDE053fpmEYHeOK1RTauVPvjTfeAAB84xvfAADs27cPb3rTm0L37+vrw+XLlwEA\n09NB9j3RCk6ePOnU9t27d7e8vbXQux2B9mpc9eKP9rqNy33fttxpmoJhGB4NawpElAQwBuA0M99D\nRLsBPAJgM4DDAD7FzIVG77MWEQ3hZz/7GQA4u0Aul0N/fz+ARTtDNpvF7OwsgMXRas+ePQCACxcu\n4Oc//zmAxZFu586dbRu95D6ZTCayE1KHruvW0bRWGLx6Wc7tuluffTU0Y/rwGQDPA9hU/fwFAF9k\n5keI6O8A3A/goSbcZ01RLBZx7NgxAIv7BO644w4AwJEjR/DMM88ACIyIQKDiDgwMhOqQ6cP27dvd\ntb/73e8AAENDQ+jr62vxU0SRNungLN36QmgBUOulboZQW09Gy0azTu8A8CEAX65+JgB3Afh29ZSH\nAXykkXsYhtFeGtUU/gbAnwHYWP28GcBFZi5VP58CsL3Be6wpxKg1MTGBl156CQAwOTkJAHj99dcB\nBKr/8PAwADh/hWQy6a4VjUGWJpPJpAtuMjEx4eoUvwah1SNTuVx2Bk9pa7lcbtv0QfojnU67v8XD\nUrQxYLFPz58/DyDoP/GrkPPm5ubccrA8SyaTcX3aDD+MerSHuMjhfji8dtNIKvp7AJxj5sOrvP4g\nEY0R0dj4+Phqm2EYRpNpNBX9h4nogwB6ENgUvgRggIhSVW1hB4DTcRcz8yEAhwBgdHR03QQ0kNHp\nyJEjTkOQefjx48fdeVu2bAEAZ1t46qmnsGlTYJY5cOAAALhlyw0bNjitQ5yHzp0757QG8YDcsWNH\naMRsNolEwo3Qvm1hKWTUvnjxIoBgZJcRWiI9A2GtCIAzxM7NzbnnlKXanp4e17fXXnstgLCmIBGn\npb8vXLjgvEO3bdsGADhz5oy7v7Qxn8+7JV8xCktkb2Z29UqZdiSTY1KWSCTc96LxtQdmdvX52k82\nm+2ItrBqTYGZH2TmHcw8AuDjAH7MzJ8E8BMAH62edh+AxxpupWEYbaMVzkufBfAIEf0nAEcAfKUF\n9+haZCQ/e/YspqamAABXX301AGD//v0AgpFfNIQf/vCHAIDvfve7bhSTEeNDH/oQAGB4eNi5RUuI\ndT2CSv07d+5s4ZMFyFxbRrflcmTI+bL0Ojs7ize/+c0AFufOr776qusrOSYjaqVScVqGaAr5fN6N\n5FK/RuwC8l2cOnUKmzdvBgDs2rULQNCP0t+vvvqqa4/0vTiSnT17FgAwNTXl2iEa3cDAgLuHH/qe\niHDnnXe6v2vhH/f3l7SbpggFZv4pgJ9W/34JwG3NqLcVtDr0mryYN9xwg1Nx5UuXL3nnzp3uRyo/\nwsnJSfdyv/vd7wYAjIyMAAA2b97sBIpMIwqFglOdxcuwHcFOfOPmcvcUVVjU8t7eXqeui/q+a9cu\nJ/Rkv4f0WW9vr3t5RRD09/fX3MIt/Sz9uH37dgwODgJYnGplMhls3bo1dK833njD1SuGXe2jIQZg\n+Z+Z3d9Svxgt0+l03QbYuClFPde1CvNoNAwjxBW796HV9PX1OW3g5ptvBgC88sorAALj4nvf+14A\nwC233AIgMCoODQ0BAK677joAwNGjRwEE6q3UJVrBxo0bnfGsXeHQ4jJQ6cS1tdCOWf5Oz1wuFzI6\n+vWL0XGl+1REzX/729/uNAAZhfv7+107pP7p6WlnsJRnkn7P5/M1kwLLNGqlSXXjNFftLbqmDI2G\nYaxPTFNoMiLZBwcHncQ/cuQIgCCOAhCMmk899RSARSPh8PCwG6Wee+45AHB7IUZGRpxhUkaWAwcO\ntD2OARE5rUQ0lnaw2ueU70IvV2obgSDPJHaBpeqqlSd0pRqCf72m0ykHriih0M7OHhoacpb0J554\nAgDwnve8B0AgFGSTlEwZvve972Hfvn0AFn9gYrHfs2ePa7tYz4eHh9uuWsZNH9bChqhuRgsbEU4y\nFTFDo2EYXcEVpSm0k2QyiVtvvRXAopHt8OHAI/zUqVNOfb3++usBBB52oubKUuPJkycBAI8++ije\n+c53AgiMZkBnwrLpUU2r9KYhrJ44Y6JO2GuGRsMwOs4VoSl0ynAjEl+WGMXx5/jx4265TJYpBwYG\nnMec/L99e7DBdMuWLbjttsAfrBMaglCpVJxNQbzuGtklKXPnUqkUSfLr72AEFm0t+nxt+PTbIdqM\nNgKKgZSZXbncIy4Yi25Pq0Ztv92dttFcEUJBfnztTm8myJcrAVU2btwYcvsFAsu3ePXJuvlb3/pW\nAIExshtUdN0GeblKpZJ7qertX/nRy+axsbEx570piABNpVLO5VjKLl686PwaZMpVKpVc/4k7tAjV\nkZER9xuQHbninqzr0G7O4tEo523atKltQW06vfpg0wfDMEKsa03BD1rRaaQdg4ODzvgoI5gOa9Zt\n7RYSiUQkAMhqwrH5/gOZTMZNR7SRDQi2ScvIL5pAKpVyG5Dkuo0bN7rtyzK6x00HRBOoVCpu+iB1\nFItFdw/RFKTO+fn5lmgKcf4PZmg0DKOrWNeaQiuIk971lmlqecK1a3RY6Uik086LTWG5rdO1kNH4\nwIEDbiQXQ6o29ElAGr3PQO8PAIJRXtoWt2wqxyQMXjKZdJqKaAqpVCqirYlBuJVam9/eOMNnOzFN\nwTCMEOtaU2hm6G6Zw05PT7vdiTL/ZGYn5cUqfvHiRRcbQI7pYKCy6iCjVaVSccdl5NIjh4weMkL3\n9fW5UVWWMMvlstM8/P+Z2Y2WUu/s7KyrT55JL/dJ/aINXL582d1LVgSkffr8uP7Wo7KfnatUKrnj\nEmtBI/0i38Xc3FwobgEQjPz6+9D166C48rypVCoShFY+62vlWXp6eiL7PVa732E5Or36YEJhiet8\nNVKiHI2Pj7uXXS9ryQ9KNtWMj4+7l1CW0iQAy/nz553xTFRjXa8IIDFsXbp0yb20soy3c+dOF3xE\n8kucO3fO7Y0QtVf/0GUbsBY6p0+fDj1nJpNxL4ncXwTYyZMn3f3l/K1bt7ppgLRfXtSFhQX34ujl\nRD9Qy+TkpKtD7i1Ch5ndcqUInWPHjjnhJOfv2LEjFJVKnk/6Qs6Tfu/t7XUvuVzX29vrnkvaKPfc\ns2ePMzpK26Svm02nDcw2fTAMI8S61BQaMX4BYc1CpLaM6AMDA27UjruPlOXz+ZBTDLA4+qTTaTdq\ny3RjcHDQjVJyTEapQqHg6hIHqJ6eHtcO2T+xc+dOVyb1aicjcYrSKe8lYrS0W09V9FQICNR40YRE\nc9q2bZvrG39ZcXBw0JVJnw4NDUWmA5lMxj2rr10VCoVImQ7YInVks9lQFGS5Fgg0GPkOpH8KhYLT\nhKSOXC4X8ZTU95H6W20A7PT0wTQFwzBCrEtNQRuTmkUzHVf6+vqaWp/Mx+X/elkqBNpS9ZdKJach\niJ2hv78/YkuoRTMccmQXKbCo9eh5uHYIA8JxIPR5cWV+ENy4torG1Wx0BOtOsu6EQr1BPzq96aQV\nFItFl+lap3WTz3qFAQhUaIluLKp2sVh0ZTKNkenD3Nyc2zsgxrbp6Wmn1kv9WvUXwSPHKpWKu1ar\n6H6SGf39aMOlPJMvgBKJROge0l757E8pstmsu782vPovpvw+RPDptiWTSdcmf8WIiOoW/P5v0GI0\nGobRVaw7TaFSqdTcgupviY07b61qD0TkkthKgBbZKXjp0qWIP8H09HTsFEvK3vWudwFYNCoePXrU\n9dWFCxfcPcVL0Pf+Gx8fdzEoRevo7+93uStkCqKNhKKJSF3ZbNb5LsjI39/f70Z8WU4cHh52Bk85\nJjtRJyYm3BRIRvZcLuc0GvFvKJVKTosRDUeWMO+4447IVuve3l63pCvtFi2st7cXo6Ojro9q4f8m\nOz19ME3BMIwQDWkKRDQA4MsA9gFgAH8I4BiAbwEYAfAKgI8x82RDrVxZmyKSN04rkBGBiNy8Oy5d\nl584NM4bMZ1Ou9FGl/lJU6VenQZdyqROYHGU0o5Hcn+950Cu1UuMfoJU7cXoe+4lEglXh2gDfX19\n7v7y7DIC33jjjc5mIQFndbYmqUtG+Y0bNzr7hBjnstmsu1Z7c8rziWYjWkG5XHaaiPRxIpFw14qm\nkEwm3VKl7ksgyKkh37fUMTAwEBrVBT9OgyzBagco0YQymYx7VulnvZNzpSxlz2g31MiaKBE9DOD/\nMPOXiSgDoBfAnwOYYObPE9EDAAaZ+bO16hkdHeWxsbFVt0PDzO5l9P0E9LOKZx4QTYU2Pz/vfuDy\nZcsPLZFIuL9FrdUWeL1t1zduifDp7e11bZTz8/m8U0XFQCX/l8tld09pqy6TexcKhVC+Rd3+mZmZ\niOvz/Py8Oy4v5dzcXMi1F1gUGIVCwV0r7c7lcu6F10ZNqVNeRjmmjW9yXk9PT8jQKfUCgRCUY0Im\nk3H1xZ0nZXLO/Px8ZLt2qVSKrL7Mzc1FykTobNq0ydWn+13qlVyYcn1vb687Jv2z1Evub+sW6l0d\nqhciOszMo8udt+rpAxH1A3gXqglkmbnAzBcB3Avg4eppDwP4yGrvYRhG+2lk+rAbwDiAfyCi/QAO\nA/gMgGFmPlM95yyA4caauDK0odFHTy20V538rTcbyd+iZWgfANEQRLUcGBhwI5CMhJVKxdUhx7QH\nn79cNTMz4+oTo5zAzE4N16qlf978/LwbXeR8HdglLhZgnJHV99TU6/h+mrRcLue0B385cX5+3j27\n9mvQGpD876d1k2PpdDqyp2F4eDi0rAoE2oZcK8f0hi4xvMq0Cogug+bzeVcm7ZE+np+fd8f05jf5\nPmTqIsfK5bJrh/bArAc97V1rS5IpADcDeIiZbwIwA+ABfQIHTxc7PyGig0Q0RkRjYrk1DKPzNKIp\nnAJwipl/Vf38bQRC4Q0i2srMZ4hoK4BzcRcz8yEAh4DAptBAO0Lokc7foqsRqd/b2+vm4WfOnHHn\ny+gkRjExgAGLo0hcxGGR8pOTk64+f068e/duN3roABt+KDI5Njk56ZbXxJCVy+XcPggZeZPJZE2/\neX+p9uTJk27JMC6NmpwXt/361KlTrk7RBuSZxPjW09Pj2hu3rVpG/snJyci2ZJmH5/N5d3+xcQCL\nfTo5GdiwdZAV0bi0TUfapJ2e/B2wWkMSO420o6+vz9k7pI75+flI9GlthPS3Zi+1+zEuMrXfV+1k\n1ZoCM58FcJKIrqsW3Q3gKIDHAdxXLbsPwGMNtdAwjLbSqPPSfwDw9erKw0sA/gCBoHmUiO4H8CqA\njzV4jxUTl+8QCEtekcrJZNLNw0UrABZHGzkWN1rG5fyTv7PZbGhVAFgc6TKZTGQUSKfTzoLt+9YX\nCgU36vkBW5Z69loag+6fWo4yvmah7681ADnPt0Xoz9J/2vVZNIXp6Wlnp/GXN5nZaRmivenlRBnl\ndZwGOV80qFQqFQl1lkgk3D3F4atUKkWWfvV3Id+7tPvMmTOuvaJxnT17FkAQVl4HoqmHuDwVnaCh\nuzPzrwHELXHc3Ui9jVCpVCJRc+JeWr1UJ2qvCIJisRha+pMyIHixxWgmPyDtMy8CoLe3F9dcc03o\nWv0i67iAwOJLBkSF2ObNmyPPpOMl6jp9NVbX6ccC3LFjR137Q3SUI6lfkufqF87fWlwqlSIvks7G\nLUY8ne1ZGxilrb5fCLA4RZHcGNqw6wvQTCbjpl/6XvLCS2JfHRUqbnOXjuQEBIFX/CVrPc1c6rtY\nim7xqDWPRsMwQqy7vQ/MXFeQFTE0FgqFkPEOCEYM8e0XjUFGoenp6cjIPz8/H1kyXFhYiOzaE3VS\n77jTGoLcQ5bP9HRDrpUynftAezaKOi3aj7RL73OQOqampty1UlYsFiORlcUQy8wRx6BKpRJ6Hv1M\nmUzGTYlEU0gmk+459d4HaYf/TMlk0j2TjLgzMzNOI9POV/K9+EuSExMT7ny9q9FfnpZy6V/dbp0T\nQk+rpB+kfrluYWHB3X85Q2O3sTZaaRhG21h3mgIRuZGiVo5DnQfAX4LTS3syEsgIMDg46JbBdGBQ\nPX+Ve/vOSzpsmT//npmZcdqAH94slUq5kV870MicWGs9fugyqf/qq6+OjKTXXHONu1Y7bvmjn3bI\n8kfXdDodsQNIuy5fvuzaIzaA2dlZd61oMfPz825EljI9okt9YsTL5XKhUHVAMKLrUGv6mXp6etyz\na43LD+aqNQb5jrXB089pyczOWOkvPxYKBXd/eaZ66bRNYd0JBW1N919o3dn6RxUXDGOpZC2ZTMZ9\n2aJKZzKZiGqYSCQiGaL1yoSP3pzk71HQ6LV6Qdqhn12eST9zXH1x/vXyckt75KXJZDKR+Iq10sZp\n3wt5yTdv3hx5hrg26HNkSiGGyXw+715QESZzc3PuPKlPVgSY2b204plaLpcjhsCFhYVIUBUtmKVf\nROhs2rTJCQjpI+n3XC7nyuqdNiw1ELUbmz4YhhFi3WkKOh5fLcRo5BvJlkPvFJQRoFgsLuk3UC/M\nXFeMw1poLaaZ4eb0iOUvm9WqX0/b6o2EXKvdem+FjKZ6iub7BWhVXr4rWZqcmppymof2pvR9F7Zu\n3QogmALI/fX35P/WtJerv7V9OY3BgqwYhtGVrDtNAUBdo+Vq5206TkKcR6Nug4xcfjJWCRqi6evr\nc6OYzEsl5oN24NG7H6VeMeIxc2wKNPnsxxRIJBKRQDA6/ZrMzfVcVzsmyflLjf7lcjli7J2ZmYlo\nVTMzM3jllVdCfaO9S6UdkgmrVCo5xzCZ309PT7vzpK9OnDjh6vTtBzptnNgvFhYWIns1hNnZ2VCK\nOmGpPBHZbNYtxy6njfoaQqeXLk1TMAwjxLrTFLSbs6A1Bp0NCAhnX6qHdDodcrqR+v0Q35cvX3aR\nlMQRSpbWdPwFHY7ct26/8MILAIKgoKIhyHLl/Py8u/bGG2907fP3JogF/Ny5c5EIQH19fc56L6Oa\n3lEo1nshlUo57UW7emstQ/pD+kdb9uUcaZP0mXYvlvO0liXPokdSOa6jWonWJ/XqrFOiNYhWkE6n\n3fei5/CiAUncBXGLvnTpktv1KnaGXC4XierlJ7LV/bIc3ZJ2YN0JBWauufXUV399NVHqWOqL0UYr\n+QG88MILoYzIQLCWrUO4AYs/9Ndeey0SfmxgYMAJGXlBZblrZGQkkkm5t7fX3UviUeRyuVCAE3kW\neV5pjwjEycnJyPRBL8/qpUg55/Dhw6E2Dg4ORqZioi5fe+21oaAjQOCt6e8TKZfLrh3S79LGqakp\n9yJL27LZrIsVKe1IpVKuDnl2+XzhwoXIvgXdJj2dWSpOYrlcdvkvtLD0N6DpTNrS7uVedt9oa2nj\nDMPoKtadplAqlSJhs+LyPsTtXJSRN5vNhvYkAGGjm47KDASqtIzCcYFJpS4xnk1NTUVG8qGhIed8\nI3XpYK1+PgIdiFVHYpZnlfOljlQq5UZ+0Sz00p72PJS+0VoPEBjsZKoiI3Q6nXb94QchyWQy7ruQ\nc3QKeK2B+MuJeh+K9JFOTyfXynSKmd1zibFSG1vFiKsNsTK9kwS9V199tTtPvCelXRcuXKjLQ1Y7\nqMm1y2kKftRxMzQahtFVrDtN4dlnn8XLL78MALjnnnsAhO0GvqFxbm7Ojbi/+MUvAATahiQxFWPU\nDTfcACAwVOk5PADccsstEWOltkv4uza1wVPvR5B27ty5M9RuZo5oIuVy2Y3k2udfNBCpQ55NG760\nNqHzVEh7pG1yL70PQIyVMhrXMorNzc255xON4cyZM5EU97Ozs5F8lJJFKpVKOS1D/t+wYUNk2ba/\nv9+1Rb5/Of/WW291o7xcNzEx4WIx6MCqYmCU9oj2du2117o+FAenXC4XcrPW/Vgul+se+f04F406\nsTXKuhMKCwsLbj37fe97X+S4fAF6q6t8efJD1z7+/hqzXq3QwTz8l2O5PQf+sbhErRp/U41OiCJo\nLzr5f6k9HPocjd6HIC9SreeshU6SI9x2220Rb8REIuGEhxx7y1veAiAQUvJiyr6FSqXinl2+M70x\nS1YM5CWbmJhwAkimBcVi0QkD+f77+/sj0ZnlOvGj0O1+7bXXIhu5fvzjHwMIhLIMJPVSK9N1O7Hp\ng2EYIdaNpqCNUb/5zW8A1M6wI5pCPp93EloMTjp3hKxJC9qfwPecbISenh43IsbtcKyHRCLhRstm\nrHn7am+pVFrRHg/tYamv0yHR6sH3pZibm3PTKTm2a9eu0BZyzVVXXeUiX0t/6P0qMk3TPheitYlx\nOJ/Ph7J/yTn+Mq8O7SftqPe7qNefodWYpmAYRoh1oymIFJ6YmHCjghjI/NEeCHs0+hpFLcNQNpt1\n80vRGHRoNBkVenp6Inse4jwgdVwHWTLUIdeA8H4BHSbMj3w8NTUVCpYChJOtah9/aYe/k0873fi5\nE3XmLJ1dyY+ZoDUp31awefPmiMNUKpVyo6ofBFbniNTZrnxbSTqddt+znKdzS/oBbIgoduT2v3tx\nVNJelMKGDRvcPaSP9BKpaDadthGslHUjFAT9gsZtQdXRkJeilkdjsVh0bsDyg5ydnXVGMB0LMO5F\nBoIfsJ9OLZVKua28vpqazWZdmU7eKtfKjy+bzbprxKAmbV1YWHBCUkeqFkOaTtYiFn0/HuP58+cj\nAWnGx8dDfgm6/cCij4a0sVKpRDYuJZNJJ4jinl1WgKQfN23aFDFgag9P6SN5zvHx8cjqgHYTl2fS\nZX6QlUKhEDFCElHEzVkL8noTxHab0LDpg2EYIdaNpqCXlWRJslZiz1p7H2pJ7mKx6EYAbZTy1/vj\nQrzFldUb5EVGPR0LUMoEnTDWV4P1uXH5COKMYb63IxCNWqzT9PlLajMzM25NXwx25XI5kkhX56uQ\nMj1lkGu1F6iUyVRE16v3VACBkTCuTH4D0qd6SVLOl6XGcrnsNKg4vxe/T3U4tm7ZEl0va6OVhmG0\njYY0BSL6EwD/FkFm6d8iSBu3FcAjADYjSE//KWYuLFlJk5DR6fz587juuiC9pcxF9QitDYFAOIBn\nPeRyucguxnYsJcmIe/z4cQCBU40YtfSOSxmVZCSXNhYKBTfCjYyMAAg7RMVpR7V8/PWot5RzVjKZ\njA126tdXvAuvAAAOIElEQVQbp63FjcbS7zIC63aXy2Vn19HHgXCiW50wVi9F1rq/PItcqz1U/Z2N\nOh+Gds5aS6y6tUS0HcAfARhl5n0AkgA+DuALAL7IzG8GMAng/mY01DCM9tCoTSEFIEdERQC9AM4A\nuAvAv64efxjAfwTwUIP3qRudlShOQvv7EVYaJFPvIeiEj7poPXqPgrZy+ztD9f5+nftyNWgnrXoc\ncvR9dD7KlSL3EA3g9OnTbtVEZ70SbUC0Er0SJO3dvXs3gMB2sRKrf5ztROP3R9xSd61n6yZWLRSY\n+TQR/RWA1wDMAfghgunCRWaWN+cUgO1LVNESNmzY4JbeRL2OQ5bDdKIQvcToGw7lB3b58mWnkus0\nYvKyai9HP7qSTppSK8Z/nGFKfmB79+515/hThVpLsHqapDNor/bFqCeas46sLcuzCwsLq85nsG3b\nNve/tEOWGvv6+iKephp/C/dK0d6Z+mWXdvhBXHK5nBNc3RJRqV4amT4MArgXwG4A2wD0AXj/Cq4/\nSERjRDQmuw4Nw+g8jUwf3gPgZWYeBwAi+g6AOwEMEFGqqi3sAHA67mJmPgTgEACMjo42Lf7UwMAA\nDh48CCB+5BSprZevfMNUNpt12oYfHmx+fj4y6szNzUUcg+bm5ty9pEynQvPLSqWSW570l8pyuVwo\nlqOuU5fpEUwHjAHCUZq1z78YMGX01slsZbohRtnZ2VmnMclyb7FYdKOlNmrK+X4qeq0lCToZrx+r\nMZ1ORzwUdZAV/R37U0O9POhvX9exH3XKPz/loNZw5JheGtVLovo5FxYWakb77mYaMYu+BuB2Iuql\n4KnvBnAUwE8AfLR6zn0AHmusiYZhtBNqZIcfEf0lgH8FoATgCILlye0IliTz1bJ/w8wLteoZHR3l\nsbGxVbdDc/HiRbcUuX17YM6Im0fqEFh+cFHtvupLe51vQcf893dMptPpyKijA3BIvTLilcvlSEJa\nqUunNZd7LlUm1+oy+SznS5num7j9EP6+hWQyGToPCLQI3U4pk+fWeySk/+L2Pvgh9OQ5FhYWIrYQ\nnfNRP5Of/FY0i0ql4tqkn8kvKxaLrszXCvr6+kKaHhAfuk4n45VnEFfzONqpRRDRYWYeXfa8TkeO\nBZorFObn5yOx+jodyaYT+N50OjmJDvHuq/f6BdIxIoHgRZF6ZfpVLBZD2Z31+RcvXnRlesuyTkYD\nBN+PNn7q85cqi2Op8/RvPC5icj1levDQU5a4Ml2+FJ2YUtQrFNaWV4VhGC1n3ex90MhI1Q1aULuR\nbd1PP/00gHCwEIldKGpwPp8PeYICwZKurOU/99xzABZHwS1btriEKKJhDA0NORVadqeOjgaD0euv\nv+60jZtuusm1TxKzSBzM66+/3mketXJ1LMdyeRUaKdPH4rSAtea1WIv18ySGYTSFdacpJBKJutOe\nr0dkxJVoyJIT4pZbbnGagpTt37/f9ZVoFu94xzucoVbyIohWUCwWnfYgZXfddVdkSVRiOaTTabdj\nVfYlAMCLL74IYNEguH///qY8u9Ec1p1Q0CHBuyXmXSeQF01U+j179jjLuPgh9Pb2ujKZMiSTSbct\nWcp0ABmx6EuUo3w+H4qaDCxa2wuFgvPAlPukUins2rULwKKH4pUovLsZmz4YhhFi3S1JroZu6INm\n4Xs+6vBtfnThnp4ed572FvTT4omxcnZ21k0txKMxk8mE0rMBi9MIvX1Yh2Dz1/Q3btx4xWh1ndSK\nbEnSMIxVse5sCqshTnqvVe1B5vdxod/iPDvjAowI/tbfnp4eF2jE35pdL3HZr4zuwjQFwzBCmKaw\nBMulDb9SuVLm/lcyJhRWSL3+90Z3ordQm4CLx6YPhmGEME2hyawno2W30MxwZn4My3ayVpy0TFMw\nDCOEaQptwLSHxmjmCLtWRutOYkKhQ5igMLoVmz4YhhHCNIUuoh7V1rSJtcdam7KYpmAYRgjTFNYY\ntWwRcYFHDWOlmFBYB8RFPm5VqrK46ctK7tHo9bXqrRXFOQ4TnPHY9MEwjBCmKawjiKjmRq56jJS1\nMkvH1aET5/jHlrqfn8KtVnZw/++lzqtUKpH2yn20FqHPqafeuC3icXkiamlAa00jMU3BMIwQy2oK\nRPRVAPcAOMfM+6pleQDfAjAC4BUAH2PmyWpOyS8B+CCAWQC/z8z/3JqmGyshbmTU4dL8FHdAVFMo\nl8vuuB5B/ZFeZ03ybRy1NBH//nJM6tOp/OQ8/b9f5tfj38sv08dkB6W+t5RJhqtKpeK0kbh7ynlx\nwW26mXo0ha8hmmL+AQBPMvNeAE9WPwPABwDsrf47COCh5jTTMIx2saymwMz/REQjXvG9AA5U/34Y\nwE8BfLZa/t84GAJ+SUQDRLSVmc80q8FG80gkEi4cm+R/0Knl4+bOfgwCnWPRn8vrMn3PuJ2K/oir\ntQg5pm0EOnGu1Ou3W9paqVQitoG45dtaOSJ1Hb52peuLa/daY7WGxmH1op8FMFz9ezuAk+q8U9Uy\nEwpdjrwEWtWtlexVIKKWJHat9YLGJXvVZf4LmkwmI2WJRCIigBKJROx5PnGG17hnX2sGRqFhQ2NV\nK1ix7y0RHSSiMSIakyzRhmF0ntVqCm/ItICItgI4Vy0/DeAadd6OalkEZj4E4BAQ5H1YZTuMFtJI\nYtZGr683iWu9IdXi7tFoOLa1qgksx2o1hccB3Ff9+z4Aj6ny36OA2wFMmT3BMNYW9SxJfhOBUXGI\niE4B+AsAnwfwKBHdD+BVAB+rnv4DBMuRJxAsSf5BC9psGEYLqWf14RNLHLo75lwG8OlGG2UYRucw\nj0bDMEKYUDAMI4QJBcMwQphQMAwjhAkFwzBCmFAwDCOECQXDMEKYUDAMI4QJBcMwQphQMAwjhAkF\nwzBCmFAwDCOECQXDMEKYUDAMI4QJBcMwQphQMAwjhAkFwzBCmFAwDCOECQXDMEKYUDAMI4QJBcMw\nQphQMAwjhAkFwzBCmFAwDCOECQXDMEIsKxSI6KtEdI6InlVl/5mIXiCiZ4jou0Q0oI49SEQniOgY\nEb2vVQ03DKM11KMpfA3A+72yHwHYx8xvB3AcwIMAQERvA/BxANdXr/mvRNRYal/DMNrKskKBmf8J\nwIRX9kNmLlU//hJBynkAuBfAI8y8wMwvI0g0e1sT22sYRotphk3hDwH8z+rf2wGcVMdOVcsMw1gj\nNCQUiOhzAEoAvr6Kaw8S0RgRjY2PjzfSDMMwmsiqhQIR/T6AewB8spqCHgBOA7hGnbajWhaBmQ8x\n8ygzj27ZsmW1zTAMo8msSigQ0fsB/BmADzPzrDr0OICPE1GWiHYD2Avg/zXeTMMw2kVquROI6JsA\nDgAYIqJTAP4CwWpDFsCPiAgAfsnM/46ZnyOiRwEcRTCt+DQzl1vVeMMwmg8tav6dY3R0lMfGxjrd\nDMNY1xDRYWYeXe4882g0DCOECQXDMEKYUDAMI4QJBcMwQphQMAwjhAkFwzBCmFAwDCOECQXDMEJ0\nhfMSEY0DmAFwvtNtATAEa4fG2hFmLbdjFzMvu9GoK4QCABDRWD3eVtYOa4e1o7XtsOmDYRghTCgY\nhhGim4TCoU43oIq1I4y1I8y6b0fX2BQMw+gOuklTMAyjC+gKoUBE76/miThBRA+06Z7XENFPiOgo\nET1HRJ+plueJ6EdE9GL1/8E2tSdJREeI6PvVz7uJ6FfVPvkWEWXa0IYBIvp2NafH80R0Ryf6g4j+\npPqdPEtE3ySinnb1xxJ5TmL7gAL+S7VNzxDRzS1uR1vyrXRcKFTzQvwtgA8AeBuAT1TzR7SaEoA/\nZea3AbgdwKer930AwJPMvBfAk9XP7eAzAJ5Xn78A4IvM/GYAkwDub0MbvgTgfzHzWwDsr7anrf1B\nRNsB/BGAUWbeByCJIJdIu/rja4jmOVmqDz6AIOTgXgAHATzU4na0J98KM3f0H4A7ADyhPj8I4MEO\ntOMxAO8FcAzA1mrZVgDH2nDvHQh+bHcB+D4AQuCYkorroxa1oR/Ay6jamVR5W/sDi2kC8gjCBX4f\nwPva2R8ARgA8u1wfAPh7AJ+IO68V7fCO/UsAX6/+HXpnADwB4I7V3rfjmgK6IFcEEY0AuAnArwAM\nM/OZ6qGzAIbb0IS/QRAIt1L9vBnARV5MuNOOPtkNYBzAP1SnMV8moj60uT+Y+TSAvwLwGoAzAKYA\nHEb7+0OzVB908rfbsnwr3SAUOgoRbQDwjwD+mJmn9TEOxG5Ll2eI6B4A55j5cCvvUwcpADcDeIiZ\nb0Lgdh6aKrSpPwYRZBrbDWAbgD5E1eiO0Y4+WI5G8q3UQzcIhbpzRTQbIkojEAhfZ+bvVIvfIKKt\n1eNbAZxrcTPuBPBhInoFwCMIphBfAjBARBJtux19cgrAKWb+VfXztxEIiXb3x3sAvMzM48xcBPAd\nBH3U7v7QLNUHbf/tNppvpR66QSg8DWBv1bqcQWAwebzVN6UgNv1XADzPzH+tDj0O4L7q3/chsDW0\nDGZ+kJl3MPMIgmf/MTN/EsBPAHy0je04C+AkEV1XLbobQaj+tvYHgmnD7UTUW/2OpB1t7Q+Ppfrg\ncQC/V12FuB3AlJpmNJ225VtppdFoBQaVDyKwpv4OwOfadM93IFADnwHw6+q/DyKYzz8J4EUA/xtA\nvo39cADA96t/v6n6xZ4A8D8AZNtw/xsBjFX75HsABjvRHwD+EsALAJ4F8N8R5BhpS38A+CYCW0YR\ngfZ0/1J9gMAg/LfV3+1vEayYtLIdJxDYDuT3+nfq/M9V23EMwAcaubd5NBqGEaIbpg+GYXQRJhQM\nwwhhQsEwjBAmFAzDCGFCwTCMECYUDMMIYULBMIwQJhQMwwjx/wH4sH/gOvMKpQAAAABJRU5ErkJg\ngg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f388a485e48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "rotated_mini2 = cv2.resize(rotated_mini, format_size)\n",
    "test_X = 1 - rotated_mini2.reshape(-1, format_size[0], format_size[1], 1).astype('float32')\n",
    "plt.imshow(rotated_mini2, cmap='gray')\n",
    "predict_probs = model.predict(test_X)\n",
    "predict_class = (predict_probs == predict_probs.max(axis=1)).dot(np.arange(4))\n",
    "angle = -90 * int(predict_class)\n",
    "print(angle)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7f388a3df208>"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f388a448128>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "rotated = np.rot90(rotated_mini2, k=-predict_class)\n",
    "plt.imshow(rotated, cmap='gray')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
